package com.mapaoer.job.dao;

import com.mapaoer.job.entity.Job;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 工作职位数据访问接口
 * 提供工作职位相关的数据库操作方法
 */
@Repository
public interface JobRepository extends JpaRepository<Job, Long> {

    /**
     * 根据创建者ID查找职位
     * @param creatorId 创建者ID
     * @return 职位列表
     */
    List<Job> findByCreatorId(Long creatorId);

    /**
     * 根据职位状态查找职位
     * @param status 职位状态
     * @return 职位列表
     */
    List<Job> findByStatus(Job.JobStatus status);

    /**
     * 根据是否付费查看查找职位
     * @param isPremium 是否付费查看
     * @return 职位列表
     */
    List<Job> findByIsPremium(Boolean isPremium);

    /**
     * 根据职位类型和状态查找职位
     * @param type 职位类型
     * @param status 职位状态
     * @return 职位列表
     */
    List<Job> findByTypeAndStatus(Job.JobType type, Job.JobStatus status);

    /**
     * 根据工作地点类型和状态查找职位
     * @param locationType 工作地点类型
     * @param status 职位状态
     * @return 职位列表
     */
    List<Job> findByLocationTypeAndStatus(Job.LocationType locationType, Job.JobStatus status);

    /**
     * 搜索职位标题或描述中包含关键词的职位
     * @param keyword 搜索关键词
     * @return 职位列表
     */
    List<Job> findByTitleContainingOrDescriptionContaining(String keyword, String keywordAgain);
}